package com.example.munidingwei

import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.os.Build
import android.util.Log

/**
 * 开机自启动接收器
 * 监听系统启动完成广播，自动启动应用服务
 */
class BootReceiver : BroadcastReceiver() {
    
    companion object {
        private const val TAG = "BootReceiver"
    }
    
    override fun onReceive(context: Context, intent: Intent) {
        when (intent.action) {
            Intent.ACTION_BOOT_COMPLETED -> {
                Log.d(TAG, "===== 系统启动完成，准备启动服务 =====")
                onBootCompleted(context)
            }
            Intent.ACTION_MY_PACKAGE_REPLACED -> {
                Log.d(TAG, "===== 应用更新完成，重新启动服务 =====")
                onAppUpdated(context)
            }
            Intent.ACTION_LOCKED_BOOT_COMPLETED -> {
                Log.d(TAG, "===== 系统锁屏启动完成 =====")
                onBootCompleted(context)
            }
        }
    }
    
    /**
     * 系统启动完成后的处理
     */
    private fun onBootCompleted(context: Context) {
        try {
            // 读取上次保存的配置
            val prefs = context.getSharedPreferences("app_prefs", Context.MODE_PRIVATE)
            val autoStart = prefs.getBoolean("auto_start_enabled", true)
            
            if (!autoStart) {
                Log.d(TAG, "自启动功能已被用户禁用")
                return
            }
            
            // 🚀 启动真实位置上报服务（不需要检查之前的状态）
            Log.d(TAG, "启动真实位置上报服务")
            RealLocationForegroundService.start(context)
            Log.d(TAG, "✅ 真实位置服务已自动启动")
            
            // 也可以选择直接启动主Activity（可选）
            val startMainActivity = prefs.getBoolean("start_main_activity_on_boot", false)
            if (startMainActivity) {
                val mainIntent = Intent(context, MainActivity::class.java).apply {
                    addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                }
                context.startActivity(mainIntent)
                Log.d(TAG, "✅ 主Activity已自动启动")
            }
            
        } catch (e: Exception) {
            Log.e(TAG, "❌ 开机自启动失败: ${e.message}", e)
        }
    }
    
    /**
     * 应用更新后的处理
     */
    private fun onAppUpdated(context: Context) {
        try {
            // 应用更新后可以选择重启服务
            val prefs = context.getSharedPreferences("app_prefs", Context.MODE_PRIVATE)
            val autoRestartAfterUpdate = prefs.getBoolean("auto_restart_after_update", true)
            
            if (autoRestartAfterUpdate) {
                onBootCompleted(context)
            }
        } catch (e: Exception) {
            Log.e(TAG, "❌ 应用更新后重启失败: ${e.message}", e)
        }
    }
}

